using System.Data.Entity.ModelConfiguration;
using CodeSaude.Domain.Entities;

namespace CodeSaude.Infrastructure.Data.EntityConfig
{
    public class BoletimAtendimentoMap : EntityTypeConfiguration<BoletimAtendimento>
    {
        public BoletimAtendimentoMap()
        {
            // Primary Key
            HasKey(t => t.BoletimAtendimentoId);

            // Properties
            Property(t => t.queixa_principal)
                .HasMaxLength(3000);

            Property(t => t.obs_hidratacao)
                .HasMaxLength(3000);

            Property(t => t.obs_mucosa)
                .HasMaxLength(3000);

            Property(t => t.obs_pele)
                .HasMaxLength(3000);

            Property(t => t.obs_pulmoes)
                .HasMaxLength(3000);

            Property(t => t.obs_cardiovascular)
                .HasMaxLength(3000);

            Property(t => t.obs_abdome)
                .HasMaxLength(3000);

            Property(t => t.obs_membros)
                .HasMaxLength(3000);

            // Table & Column Mappings
            ToTable("boletim_atendimento");
            Property(t => t.BoletimAtendimentoId).HasColumnName("id_boletim");
            Property(t => t.id_registro).HasColumnName("id_registro");
            Property(t => t.id_especialidade).HasColumnName("id_especialidade");
            Property(t => t.id_profissional).HasColumnName("id_profissional");
            Property(t => t.queixa_principal).HasColumnName("queixa_principal");
            Property(t => t.id_hidratacao).HasColumnName("id_hidratacao");
            Property(t => t.obs_hidratacao).HasColumnName("obs_hidratacao");
            Property(t => t.id_mucosa).HasColumnName("id_mucosa");
            Property(t => t.obs_mucosa).HasColumnName("obs_mucosa");
            Property(t => t.id_pele).HasColumnName("id_pele");
            Property(t => t.obs_pele).HasColumnName("obs_pele");
            Property(t => t.id_pulmoes).HasColumnName("id_pulmoes");
            Property(t => t.obs_pulmoes).HasColumnName("obs_pulmoes");
            Property(t => t.id_cardiovascular).HasColumnName("id_cardiovascular");
            Property(t => t.obs_cardiovascular).HasColumnName("obs_cardiovascular");
            Property(t => t.id_abdome).HasColumnName("id_abdome");
            Property(t => t.obs_abdome).HasColumnName("obs_abdome");
            Property(t => t.id_membros).HasColumnName("id_membros");
            Property(t => t.obs_membros).HasColumnName("obs_membros");
            Property(t => t.id_saida).HasColumnName("id_saida");
            Property(t => t.data_obito).HasColumnName("data_obito");
            Property(t => t.hora_obito).HasColumnName("hora_obito");
            Property(t => t.id_situacao).HasColumnName("id_situacao");
            Property(t => t.id_dengue).HasColumnName("id_dengue");
            Property(t => t.data_criacao).HasColumnName("data_criacao");
            Property(t => t.Usuario_criacao).HasColumnName("Usuario_criacao");
            Property(t => t.data_alteracao).HasColumnName("data_alteracao");
            Property(t => t.Usuario_alteracao).HasColumnName("Usuario_alteracao");
            Property(t => t.dt_profissional_atd).HasColumnName("dt_profissional_atd");
            Property(t => t.id_profissional_ult).HasColumnName("id_profissional_ult");
            Property(t => t.dt_profissional_ult).HasColumnName("dt_profissional_ult");

            // Relationships
            //this.HasOptional(t => t.profissional)
            //    .WithMany(t => t.boletim_atendimento)
            //    .HasForeignKey(d => d.id_profissional);

            //this.HasRequired(t => t.RegistroAtendimento)
            //    .WithMany(t => t.boletim_atendimento)
            //    .HasForeignKey(d => new { d.id_registro, d.id_especialidade });

        }
    }
}
